package com.kgc.kmall.managerservice.service;

import com.kgc.kmall.bean.PmsBaseAttrInfo;
import com.kgc.kmall.bean.PmsBaseAttrInfoExample;
import com.kgc.kmall.bean.PmsBaseAttrValue;
import com.kgc.kmall.bean.PmsBaseAttrValueExample;
import com.kgc.kmall.managerservice.mapper.PmsBaseAttrInfoMapper;
import com.kgc.kmall.managerservice.mapper.PmsBaseAttrValueMapper;
import com.kgc.kmall.service.AttrService;
import org.apache.dubbo.config.annotation.Service;

import javax.annotation.Resource;
import java.util.List;
@Service
public class AttrServiceImpl implements AttrService {

    @Resource
    PmsBaseAttrInfoMapper pmsBaseAttrInfoMapper;
    @Resource
    PmsBaseAttrValueMapper pmsBaseAttrValueMapper;
    @Override
    public List<PmsBaseAttrInfo> select(Long catalog3Id) {
        PmsBaseAttrInfoExample example=new PmsBaseAttrInfoExample();
        PmsBaseAttrInfoExample.Criteria criteria = example.createCriteria();
        criteria.andCatalog3IdEqualTo(catalog3Id);
        List<PmsBaseAttrInfo> pmsBaseAttrInfos = pmsBaseAttrInfoMapper.selectByExample(example);
        for (PmsBaseAttrInfo pmsBaseAttrInfo : pmsBaseAttrInfos) {
            PmsBaseAttrValueExample example1=new PmsBaseAttrValueExample();
            example1.createCriteria().andAttrIdEqualTo(pmsBaseAttrInfo.getId());
            List<PmsBaseAttrValue> pmsBaseAttrValues = pmsBaseAttrValueMapper.selectByExample(example1);
            pmsBaseAttrInfo.setAttrValueList(pmsBaseAttrValues);
        }
        return pmsBaseAttrInfos;
    }

    @Override
    public Integer add(PmsBaseAttrInfo pmsBaseAttrInfo) {
    int i;
        //判断是添加还是修改
        if(pmsBaseAttrInfo.getId()==null){
        i= pmsBaseAttrInfoMapper.insert(pmsBaseAttrInfo);
        }else{
        i= pmsBaseAttrInfoMapper.updateByPrimaryKeySelective(pmsBaseAttrInfo);
        }
        //如果此类属性中的集合不为空则执行删除属性值的操作
        if(pmsBaseAttrInfo.getAttrValueList()!=null){
            PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
            PmsBaseAttrValueExample.Criteria criteria = example.createCriteria();
            criteria.andAttrIdEqualTo(pmsBaseAttrInfo.getId());
            pmsBaseAttrValueMapper.deleteByExample(example);
        }

        //如果集合不为空,则往集合中添加数据
        if(pmsBaseAttrInfo.getAttrValueList()!=null&&pmsBaseAttrInfo.getAttrValueList().size()>0){
            pmsBaseAttrValueMapper.addAttrValues(pmsBaseAttrInfo.getAttrValueList(),pmsBaseAttrInfo.getId());
        }
        return i;
    }

    //根据平台属性查询平台属性值
    @Override
    public List<PmsBaseAttrValue> seleAttrValue(Long attrid) {
        PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
        PmsBaseAttrValueExample.Criteria criteria = example.createCriteria();
        criteria.andAttrIdEqualTo(attrid);
        return pmsBaseAttrValueMapper.selectByExample(example);
    }
}
